﻿$(function () {

    var exits = ['fadeIn', 'fadeInDown', 'fadeInUpBig', 'bounceIn', 'bounceInDown',
        'bounceInUp', 'bounceInLeft', 'rotateIn', 'rotateInUpLeft',
        'lightSpeedIn', 'rollIn'];

    var entrances = ['fadeIn', 'fadeInDown', 'fadeInRight', 'bounceIn', 'bounceInRight',
            'rotateIn', 'rotateInDownLeft', 'lightSpeedIn', 'rollIn', 'bounceInDown'];

    var photos = $('#photos'),
        photos_hidden = $('#photos_hidden'),
        ignoreClicks = false;

    $('.arrow').click(function (e, simulated) {
        if (ignoreClicks) {

            // Если клики по стрелкам - игнорируются, события срабатывания остальных обработчиков
            // останавливаются.
            //Другими словами, во время анимации перехода от слайда к слайду мы запускаем игнорирования клика по стрелкам, что блокирует преждевременный переход к следующему слайду до завершения текущей анимации

            e.stopImmediatePropagation();
            return false;
        }

        // В другом случае позволяется кликать по стрелкам, но устанавливается флаг ignoreClicks. Т.е. возможность клика по стрелкам сохраняется но, преждевременного перехода к следующему слайду не происходит

        //ignoreClicks = true;

        if (!simulated) {
            // Как только пользователь кликает по стрелкам, остановить автоматическое слайдшоу
            clearInterval(slideshow);
        }
    });

    // отслеживаем событие клика по стрелке "вперёд"
    $('.arrow.next').click(function (e) {

        e.preventDefault();
        var elem1 = $('#photos div:first');
        //верхний элемент
        var elem = $('#photos_hidden div:last');
        // применяем случайный выбор анимации
        elem.addClass('animated')
            .addClass(exits[Math.floor(exits.length * Math.random())])
            .prependTo(photos);

        elem1.attr('class', '')
            .prependTo(photos_hidden);

        setTimeout(function () {
        
            //сбрасываем классы
            //elem.attr('class', '').addClass('hidden').prependTo(photos);

            // анимация закончена!
            // разрешить клики по стрелкам снова.
            //ignoreClicks = false;

        }, 3000);
    });

    // отслеживаем событие клика по стрелке "назад"
    $('.arrow.previous').click(function (e) {

        e.preventDefault();

        var elem1 = $('#photos div:first');
        // самый нижний элемент
        var elem = $('#photos_hidden div:first');

        // передвинуть фотографию вверх и применить случайную анимацию
        elem.appendTo(photos)
            .addClass('animated')
            .addClass(entrances[Math.floor(entrances.length * Math.random())]);

        elem1.attr('class', '')
            .appendTo(photos_hidden);
        setTimeout(function () {

            // удалить классы
            //elem.attr('class', '').addClass('hidden');

            // анимация закончена!
            // разрешить клики по стрелкам снова.
            //ignoreClicks = false;

        }, 3000);
    });

    // начать авто-слайдшоу
    var slideshow = setInterval(function () {

        // Симулировать клик по стрелке каждые 1.5 секунд
        $('.arrow.next').trigger('click', [false]);

    }, 3500);

});